from selenium.webdriver.support.wait import WebDriverWait

from utils import DriverUtil


class BasePage:
    """
    元素获取类
    """

    def __init__(self, driver_type):
        # 根据元素传入对象确定调用方法
        if driver_type == 'web':
            self.driver = DriverUtil.get_web_driver()
        elif driver_type == 'app':
            self.driver = DriverUtil.get_app_driver()
        else:
            print('输入的驱动类型错误！')

    def find_element_method(self, location, timeout=5, poll=0.5):
        """
        单个元素元素定位方法
        :param location: 元素定位属性值
        :param timeout: 超时时长
        :param poll: 定位方法执行时间间隔
        :return: 元素对象
        """
        element = WebDriverWait(self.driver, timeout, poll).until(lambda x: x.find_element(*location))
        return element

    def find_elements_method(self, location, timeout, poll):
        """
        多个元素元素定位方法
        :param location: 元素定位属性值
        :param timeout: 超时时长
        :param poll: 定位方法执行时间间隔
        :return: 元素对象
        """
        element = WebDriverWait(self.driver, timeout, poll).until(lambda x: x.find_element(*location))
        return element

    @staticmethod
    def input_element(element, text):
        """
        静态方法
        元素输入方法
        :param element: 元素对象
        :param text: 文本内容
        """
        element.clear()
        element.send_keys(text)

    @staticmethod
    def click_element(element):
        """
        静态方法
        元素点击方法
        :param element: 元素对象
        """
        element.click()

if __name__ == '__main__':
    BasePage('web')